<?php
/*
Description: This plgin allow to create new post type scheda_spesa
Version: 1.0
Author: Carmine Ricco - Luca De Cristofano
Author URI: #
License: GPL2
*/

$pluginDir = basename(dirname(__FILE__));
$pluginPath	= WP_PLUGIN_DIR . '/' . $pluginDir;

require_once($pluginPath . "/wp-formazione_includes.php");	

wpf_scheda_spesa_hooks();

// fissa gli hook
function wpf_scheda_spesa_hooks() {
    // creo il plugin ed i relativi menu
    register_activation_hook(__FILE__, 'wpf_scheda_spesa_rewrite_flush');  // serve per i permalink
    add_action('init', 'wpf_scheda_spesa_init'); // quando inizializzo la pagina
    
    
    // genero la tabella per la visualizzazione dei moduli :
    add_filter('manage_edit-wpf_scheda_spesa_columns','wpf_scheda_spesa_list_column_header'); // aggiunge la colonna "azienda" alla lista dei fascicoli
    add_action('manage_wpf_scheda_spesa_posts_custom_column',  'wpf_scheda_spesa_list_column_row', 10, 2 ); // riempie la colonna azienda alla lista dei fascicoli
    add_filter('manage_edit-wpf_scheda_spesa_sortable_columns', 'wpf_scheda_spesa_list_sort_columns' ); // rende ordinabile per una colonna
    
    add_filter('wpf_scheda_spesa_field', 'wpf_scheda_spesa_render_field', 10, 2);
	add_filter('wpf_scheda_spesa_available_statuses', 'wpf_scheda_spesa_filter_status');
    
    // salvo i dati dei vari box creati
    add_action( 'save_post', 'wpf_scheda_spesa_save', 10, 2 ); // salva i dati di BOXSCHEDASPESA
    //add_action( 'save_post', 'wpf_scheda_spesa_statusflow');
    
    // nascondo la sezione per la modifica dello slug box (permalink)
}


// inizializza quello che serve
function wpf_scheda_spesa_init() {

	// creazione del posttype
	  $labels = array(
	    'name' => _x('Schede spesa', 'Raccolgono i contenuti del corso e delle schede di spesa'),
	    'singular_name' => _x('Scheda spesa', 'Nome singolare della Scheda spesa'),
	    'add_new' => _x('Aggiungi nuova', 'wpf_scheda_spesa'),
	    'add_new_item' => __('Nuova Scheda spesa'),
	    'edit_item' => __('Modifica Scheda spesa'),
	    'new_item' => __('Nuovo Scheda spesa'),
	    'all_items' => __('Tutte le Schede spesa'),
	    'view_item' => __('Visualizza questa Scheda spesa'),
	    'search_items' => __('Cerca una Scheda spesa'),
	    'not_found' =>  __('Nessuna Scheda spesa trovata'),
	    'not_found_in_trash' => __('Non ci sono Schede spesa nel cestino'), 
	    'parent_item_colon' => '',
	    'menu_name' => 'Schede spesa'
	  );
	  	  
	  $args = array(
	    'labels' => $labels,
	    'public' => true,
	    'publicly_queryable' => true,
	    'show_ui' => true, 
	    'show_in_menu' => 'edit.php?post_type=wpf_progetto', 
	    'query_var' => true,
	    'rewrite' => array('slug' => 'scheda_spesa'),
	    'capability_type' => array('modulo', 'moduli'),
	  	//'capabilities' => $capabilities,
	    'has_archive' => true, 
	  	'map_meta_cap' => true, 
	    'hierarchical' => true,
	    'menu_position' => null,
	    'supports' => array('title' ),
	    
	  );


	register_post_type('wpf_scheda_spesa',$args);		
	      
        $val_prj = get_posts(wpf_get_query('progetti_approvati'));
        $values = '';
        foreach($val_prj as $id => $val ) $values .= $val->ID.':'.$val->post_title.',';
        $values = trim($values,',');

        $form_fields = array(
		'progetto' => array(
				 'type' => 'select',
				 'description'=>__("Project", WPF_DOMAIN ),
                                 'values' => $values,
				 'howto' => __("Il progetto associato a questa scheda spesa", WPF_DOMAIN ),
                                 ),
             'note' => array(
                'type' => 'longtext', 
                'description' => __("Note", WPF_DOMAIN ), 
                'howto' => __("Scrivi qui informazioni si questa scheda spesa", WPF_DOMAIN )
            ), 
	);

        register_post_box('wpf_scheda_spesa', 'dati_scheda_spesa', 'Dati scheda spesa', 'advanced', 'core', $form_fields);
 
	wpf_scheda_spesa_tassonomie_init();  
}


function wpf_scheda_spesa_tassonomie_init()
{
 	wpf_tassonomia_registra_macrovoce('wpf_scheda_spesa');
}


// serve per gestire i permalink
function wpf_scheda_spesa_rewrite_flush()
{
	wpf_scheda_spesa_init();
	flush_rewrite_rules();
}

function wpf_scheda_spesa_filter_status($statuses) {
	global $post;

    $new_statuses = array();

    $new_statuses['draft']      = $statuses['draft'];
    $new_statuses['pending']    = $statuses['pending'];
    $new_statuses['publish']    = $statuses['publish'];
    $new_statuses['closed']     = $statuses['closed'];

    return $new_statuses;
}

// cattura e salva i dati del box BOXSCHEDASPESA

function wpf_scheda_spesa_save( $post_id, $post ) {
	
	//var_dump($post_ID);
    // verify if this is an auto save routine. 
    // If it is our form has not been submitted, so we dont want to do anything
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {    	
        return;
    }
    
    // verify this came from the our screen and with proper authorization,
    // because save_post can be triggered at other times
    /*if ( !wp_verify_nonce( @$_POST['wpf_scheda_spesa_noncename'], plugin_basename( __FILE__ ) ) ) {     	
          return;
	}*/
          
    // Check permissions : solo post_type azienda e solo gli utenti che hanno edit_post 
    if ( 'wpf_scheda_spesa' != $_POST['post_type'] ) return;
    
    
    if ( !current_user_can( 'edit_post', $post_id ) ) return;

    
            	// OK, we're authenticated: we need to find and save the data

            	
//     admin_field_save_post_meta($post_id, 'progetto', $_POST['progetto']);
//     admin_field_save_post_meta($post_id, 'note', $_POST['note']);
    			            	
     $my_post = array();
     $my_post['ID'] = $post_id;
     $my_post['post_parent'] = $_POST['progetto'];
	
	remove_action('save_post', 'wpf_scheda_spesa_save');
	wp_update_post($my_post);
	add_action('save_post', 'wpf_scheda_spesa_save');
   
}








// aggiunge il contenuto della colonna nella tabella
function wpf_scheda_spesa_list_column_row( $column_name, $id ) {
global $post;
    // verifico quale colonna sto riempiendo
    if ( $column_name == 'progetto' )   echo get_post_meta($id,'progetto',true);
    if ( $column_name == 'macrovoce' ) {
	        $macrovoce_terms = wp_get_object_terms($post->ID, 'macrovoce');
	        if(!empty($macrovoce_terms)){
	            if(!is_wp_error( $macrovoce_terms )){
	                foreach($macrovoce_terms as $term){
	                    echo '<a href="'.get_term_link($term->slug, 'macrovoce').'">'.$term->name.'</a>, '; 
	                }
	            }
	        }
    }
   
}

// aggiunge le colonne della tabella
function wpf_scheda_spesa_list_column_header( $cols ) {
    $newcols['cb'] = $cols['cb']; // <input type="checkbox"/>
    $newcols['title'] = 'Titolo';
    $newcols['macrovoce'] = 'macrovoce';
    
    foreach ($cols as $k => $v) $newcols[$k] = $v;
    return $newcols;
}

// indica che la colonna è ordinabile
function wpf_scheda_spesa_list_sort_columns($cols) {	
	$cols['macrovoce'] = 'macrovoce'; 
	return $cols;
}

function wpf_scheda_spesa_render_field($field, $field_id)
{
	global $post;
	
    if (($post->post_status!='draft') && $field_id == 'progetto')
	{
		$field['default'] = $post->post_parent;
		$field['readonly'] = TRUE;
	}

    return $field;
}

function wpf_scheda_spesa_statusflow($post_id, $post)
{
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
    if ($post->post_type!='wpf_progetto') return;

    $new_post['ID']=$post_id;
    if (($_POST['original_post_status']=='draft') && ($_POST['post_status']=='publish') )
    {
    	$new_post['post_status']='pending';
	}
	
	if (current_user_can('administrator'))
	{
	    if (($_POST['original_post_status']=='pending') && ($_POST['post_status']=='publish') )
	    {
	    	$new_post['post_status']='publish';
	    }   
				
	    if (($_POST['original_post_status']=='publish') && ($_POST['post_status']=='publish') )
		{
			$new_post['post_status']='closed';
		}
	}
	
    remove_action( 'save_post', 'wpf_scheda_spesa_statusflow' ); // to remove loop!!
    wp_update_post($new_post);
    add_action( 'save_post', 'wpf_scheda_spesa_statusflow' ); // to add filter for next save!!
}


?>
